<!DOCTYPE html>
<html lang="zh-cn">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Sublime Text 3 API - macdfree&#39;s blog</title>
  <meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>

<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />

<meta name="theme-color" content="#f8f5ec" />
<meta name="msapplication-navbutton-color" content="#f8f5ec">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="#f8f5ec">


<meta name="author" content="macd" />
  <meta name="description" content="API Reference – Sublime Text 3 Documentation .fancybox-margin { margin-right: 0px; } Website Forum Sublime Text 3 Documentation API Reference 综述 插件示例 插件生命周期 Threading Types 核心组件 sublime Module View Class Selection Class Region Class Phantom Class PhantomSet Class Edit Class Window Class Settings Class Plugin Extension Points sublime_plugin Module EventListener Class ViewEventListener Class ApplicationCommand Class WindowCommand Class TextCommand" />

  <meta name="keywords" content="blog, macd, even" />


<meta name="baidu-site-verification" content="Ak74Sk61bk" />
<meta name="google-site-verification" content="fAeFHpkrhfFS8LxdzXy0EtAPcVStv0faGn238sRF3L8" />


<meta name="generator" content="Hugo 0.54.0" />


<link rel="canonical" href="/posts/sublimetext3api/" />

<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/manifest.json">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">




<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>


<link href="/dist/even.min.css?v=3.1.1" rel="stylesheet">
<link href="/lib/fancybox/jquery.fancybox-3.1.20.min.css" rel="stylesheet">




<meta property="og:title" content="Sublime Text 3 API" />
<meta property="og:description" content="API Reference – Sublime Text 3 Documentation .fancybox-margin { margin-right: 0px; } Website Forum Sublime Text 3 Documentation API Reference 综述 插件示例 插件生命周期 Threading Types 核心组件 sublime Module View Class Selection Class Region Class Phantom Class PhantomSet Class Edit Class Window Class Settings Class Plugin Extension Points sublime_plugin Module EventListener Class ViewEventListener Class ApplicationCommand Class WindowCommand Class TextCommand" />
<meta property="og:type" content="article" />
<meta property="og:url" content="/posts/sublimetext3api/" />
<meta property="article:published_time" content="2016-10-02T13:51:54&#43;00:00"/>
<meta property="article:modified_time" content="2016-10-02T13:51:54&#43;00:00"/>

<meta itemprop="name" content="Sublime Text 3 API">
<meta itemprop="description" content="API Reference – Sublime Text 3 Documentation .fancybox-margin { margin-right: 0px; } Website Forum Sublime Text 3 Documentation API Reference 综述 插件示例 插件生命周期 Threading Types 核心组件 sublime Module View Class Selection Class Region Class Phantom Class PhantomSet Class Edit Class Window Class Settings Class Plugin Extension Points sublime_plugin Module EventListener Class ViewEventListener Class ApplicationCommand Class WindowCommand Class TextCommand">


<meta itemprop="datePublished" content="2016-10-02T13:51:54&#43;00:00" />
<meta itemprop="dateModified" content="2016-10-02T13:51:54&#43;00:00" />
<meta itemprop="wordCount" content="6843">



<meta itemprop="keywords" content="" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Sublime Text 3 API"/>
<meta name="twitter:description" content="API Reference – Sublime Text 3 Documentation .fancybox-margin { margin-right: 0px; } Website Forum Sublime Text 3 Documentation API Reference 综述 插件示例 插件生命周期 Threading Types 核心组件 sublime Module View Class Selection Class Region Class Phantom Class PhantomSet Class Edit Class Window Class Settings Class Plugin Extension Points sublime_plugin Module EventListener Class ViewEventListener Class ApplicationCommand Class WindowCommand Class TextCommand"/>

<!--[if lte IE 9]>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/classlist/1.1.20170427/classList.min.js"></script>
<![endif]-->

<!--[if lt IE 9]>
  <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->

</head>
<body>
  <div id="mobile-navbar" class="mobile-navbar">
  <div class="mobile-header-logo">
    <a href="/" class="logo">macdfree&#39;s blog</a>
  </div>
  <div class="mobile-navbar-icon">
    <span></span>
    <span></span>
    <span></span>
  </div>
</div>
<nav id="mobile-menu" class="mobile-menu slideout-menu">
  <ul class="mobile-menu-list">
    <a href="/">
        <li class="mobile-menu-item">首页</li>
      </a><a href="/categories/">
        <li class="mobile-menu-item">分类</li>
      </a><a href="/tags/">
        <li class="mobile-menu-item">标签</li>
      </a><a href="/archive/">
        <li class="mobile-menu-item">归档</li>
      </a>
  </ul>
</nav>
  <div class="container" id="mobile-panel">
    <header id="header" class="header">
        <div class="logo-wrapper">
  <a href="/" class="logo">macdfree&#39;s blog</a>
</div>

<nav class="site-navbar">
  <ul id="menu" class="menu">
    <li class="menu-item">
        <a class="menu-item-link" href="/">首页</a>
      </li><li class="menu-item">
        <a class="menu-item-link" href="/categories/">分类</a>
      </li><li class="menu-item">
        <a class="menu-item-link" href="/tags/">标签</a>
      </li><li class="menu-item">
        <a class="menu-item-link" href="/archive/">归档</a>
      </li>
  </ul>
</nav>
    </header>

    <main id="main" class="main">
      <div class="content-wrapper">
        <div id="content" class="content">
          <article class="post">
    
    <header class="post-header">
      <h1 class="post-title">Sublime Text 3 API</h1>

      <div class="post-meta">
        <span class="post-time"> 2016-10-02 </span>
        <div class="post-category">
          
            <a href="/categories/html/"> html </a>
          
        </div>
        <span class="more-meta"> 约 6843 字 </span>
        <span class="more-meta"> 预计阅读 14 分钟 </span>
        <span id="busuanzi_container_page_pv" class="more-meta"> <span id="busuanzi_value_page_pv"><img src="/img/spinner.svg" alt="spinner.svg"/></span> 次阅读 </span>
      </div>
    </header>

    
    
<div class="post-toc" id="post-toc">
  <h2 class="post-toc-title">文章目录</h2>
  
  <div class="post-toc-content always-active">
    
  </div>
</div>

    
    <div class="post-content">
      
<!DOCTYPE html>
<!-- saved from url=(0054)https://macdfree.github.io/2016/09/18/SublimeText3API/ -->
<html class="">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>API Reference – Sublime Text 3 Documentation</title>
  <link rel="stylesheet" type="text/css" href="./sublime_docs.css">
  <link rel="stylesheet" type="text/css" href="./css.css">
  <style type="text/css">
  .fancybox-margin {
    margin-right: 0px;
  }
  </style>
</head>

<body data-gclp-initialized="true" data-gistbox-initialized="true">
  <script src="./prism.js"></script>
  <header>
    <section>
      <nav>
        <a href="https://sublimetext.com/" target="_blank" rel="external">Website</a>
        <a href="https://forum.sublimetext.com/" target="_blank" rel="external">Forum</a>
      </nav>
      <div class="index">
        <a href="https://www.sublimetext.com/docs/3/index.html" target="_blank" rel="external"><span>Sublime Text 3</span> Documentation</a></div>
      <h1>API Reference</h1>
    </section>
  </header>
  <section>
    <div class="column">
      <h3>综述</h3>
      <ul>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#example_plugins">插件示例</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#plugin_lifecycle">插件生命周期</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#threading">Threading</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#types">Types</a></li>
      </ul>
    </div>
    <div class="column">
      <h3>核心组件</h3>
      <ul>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime"><code>sublime</code> Module</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View"><code>View</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Selection"><code>Selection</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region"><code>Region</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Phantom"><code>Phantom</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.PhantomSet"><code>PhantomSet</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Edit"><code>Edit</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Window"><code>Window</code> Class</a></li>
        <li><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Settings"><code>Settings</code> Class</a></li>
      </ul>
    </div>
    <div class="column">
      <h3>Plugin Extension Points</h3>
      <ul>
        <li>
          <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin"><code>sublime_plugin</code> Module</a>
        </li>
        <li>
          <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin.EventListener"><code>EventListener</code> Class</a>
        </li>
        <li>
          <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin.ViewEventListener"><code>ViewEventListener</code> Class</a>
        </li>
        <li>
          <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin.ApplicationCommand"><code>ApplicationCommand</code> Class</a>
        </li>
        <li>
          <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin.WindowCommand"><code>WindowCommand</code> Class</a>
        </li>
        <li>
          <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin.TextCommand"><code>TextCommand</code> Class</a>
        </li>
      </ul>
    </div>
  </section>
  <section>
    <h2>综述</h2>
    <h3 id="example_plugins">插件示例</h3>
    <p>Sublime Text预装了几个插件，它们位于
      <tt>Default</tt>package中:
    </p>
    <ul>
      <li>
        <span class="file">Packages/Default/delete_word.py</span>&nbsp;删除光标左边或右边的单词</li>
      <li>
        <span class="file">Packages/Default/duplicate_line.py</span>&nbsp;复制当前行</li>
      <li>
        <span class="file">Packages/Default/exec.py</span> Uses phantoms to display errors inline
      </li>
      <li>
        <span class="file">Packages/Default/font.py</span> Shows how to work with settings
      </li>
      <li>
        <span class="file">Packages/Default/goto_line.py</span> Prompts the user for input, then updates the selection
      </li>
      <li>
        <span class="file">Packages/Default/mark.py</span> Uses
        <tt>add_regions()</tt> to add an icon to the gutter
      </li>
      <li>
        <span class="file">Packages/Default/show_scope_name.py</span> Uses a popup to show the scope names at the caret
      </li>
      <li>
        <span class="file">Packages/Default/trim_trailing_whitespace.py</span> Modifies a buffer just before its saved
      </li>
    </ul>
    <h3 id="plugin_lifecycle">插件生命周期</h3>
    <p>在导入时，插件不能调用任何API函数，除了&nbsp;
      <tt>sublime.version()</tt>,
      <tt>sublime.platform()</tt>,
      <tt>sublime.architecture()</tt>&nbsp;和&nbsp;
      <tt>sublime.channel()</tt>。</p>
    <p>
      If a plugin defines a module level function
      <tt>plugin_loaded()</tt>, this will be called when the API is ready to use. Plugins may also define
      <tt>plugin_unloaded()</tt>, to get notified just before the plugin is unloaded.
    </p>
    <h3 id="threading">Threading</h3>
    <p>
      All API functions are thread-safe, however keep in mind that from the perspective of code running in an alternate thread, application state will be changing while the code is running.
    </p>
    <h3 id="types">Types</h3>
    <p>
      This documentation generally refers to simply Python data types. Some type names are classes documented herein, however there are also a few custom type names that refer to construct with specific semantics:
    </p>
    <ul>
      <li>
        <strong><tt id="type-location">location</tt></strong>: a tuple of
        <tt>(str, str, (int, int))</tt> that contains information about a location of a symbol. 第一个字符串是文件的绝对路径，第二个是文件相对于工程的相对路径，第三个是表示当前的行数和列数。</li>
      <li>
        <strong><tt id="type-point">point</tt></strong>: an
        <tt>int</tt> that represents the offset from the beginning of the editor buffer. The
        <tt>View</tt> methods
        <tt>text_point()</tt> and
        <tt>rowcol()</tt> allow converting to and from this format.
      </li>
      <li>
        <strong><tt id="type-value">value</tt></strong>: any of the Python data types
        <tt>bool</tt>,
        <tt>int</tt>,
        <tt>float</tt>,
        <tt>str</tt>,
        <tt>list</tt> or
        <tt>dict</tt>.
      </li>
      <li>
        <strong><tt id="type-vector">vector</tt></strong>: a tuple of
        <tt>(float, float)</tt> representing
        <tt>x</tt> and
        <tt>y</tt> coordinates.
      </li>
    </ul>
  </section>
  <section>
    <h2 id="sublime">Sublime Module</h2>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">set_timeout(callback, delay)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Runs the
            <tt>callback</tt> in the main thread after the given
            <tt>delay</tt> (in milliseconds).&nbsp;<span style="font-size: 14.4px;">Callbacks with an equal delay will be run in the order they were added.在给定延时后在主线程上执行回调方法。</span><span style="font-size: 0.9em;">如果回调函数的延时时间相同将会按照方法被加载的顺序执行。</span>
            <br>
          </td>
        </tr>
        <tr>
          <td class="mth">set_timeout_async(callback, delay)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Runs the
            <tt>callback</tt> on an alternate thread after the given
            <tt>delay</tt> (in milliseconds).在给定延时后在子线程上执行回调方法</td>
        </tr>
        <tr>
          <td class="mth">error_message(string)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Displays an error dialog to the user.显示一个错误弹窗。</td>
        </tr>
        <tr>
          <td class="mth">message_dialog(string)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Displays a message dialog to the user.显示一个提示框。</td>
        </tr>
        <tr>
          <td class="mth">ok_cancel_dialog(string, &lt;ok_title&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Displays an ok / cancel question dialog to the user. If
            <tt>ok_title</tt> is provided, this may be used as the text on the ok button. Returns
            <tt>True</tt> if the user presses the ok button.
            <br>显示一个确认/取消询问框。使用<span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">ok_title</span><span style="font-size: 14.4px;">可以指定确认按钮的文字。点击确定将返回</span><span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">True</span><span style="font-size: 14.4px;">。</span><span style="font-size: 14.4px;"><br></span></td>
        </tr>
        <tr>
          <td class="mth">yes_no_cancel_dialog(string, &lt;yes_title&gt;, &lt;no_title&gt;)</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Displays a yes / no / cancel question dialog to the user. If
            <tt>yes_title</tt> and/or
            <tt>no_title</tt> are provided, they will be used as the text on the corresponding buttons on some platforms. Returns
            <tt>sublime.DIALOG_YES</tt>,
            <tt>sublime.DIALOG_NO</tt> or
            <tt>sublime.DIALOG_CANCEL</tt>.
            <br>显示一个是/否/取消询问框。<span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">yes_title</span><span style="font-size: 0.9em;">和</span><span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">no_title</span><span style="font-size: 0.9em;">可以指定相应按钮的文字。函数将返回</span>
            <tt>sublime.DIALOG_YES</tt><span style="font-size: 14.4px;">，</span>
            <tt>sublime.DIALOG_NO</tt><span style="font-size: 14.4px;">&nbsp;或&nbsp;</span>
            <tt>sublime.DIALOG_CANCEL</tt><span style="font-size: 14.4px;">.&nbsp;</span><span style="font-size: 0.9em;"><br></span></td>
        </tr>
        <tr>
          <td class="mth">load_resource(name)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Loads the given resource. The
            <tt>name</tt> should be in the format
            <tt>Packages/Default/Main.sublime-menu</tt>.
            <br>加载给定的 资源。</td>
        </tr>
        <tr>
          <td class="mth">load_binary_resource(name)</td>
          <td class="rtn">bytes</td>
          <td class="dsc">
            Loads the given resource. The
            <tt>name</tt> should be in the format
            <tt>Packages/Default/Main.sublime-menu</tt>.
            <br><span style="font-size: 14.4px;">加载给定的 资源。</span>
            <br>
          </td>
        </tr>
        <tr>
          <td class="mth">find_resources(pattern)</td>
          <td class="rtn">[str]</td>
          <td class="dsc">
            Finds resources whose file name matches the given
            <tt>pattern</tt>.
            <br>
          </td>
        </tr>
        <tr>
          <td class="mth">encode_value(value, &lt;pretty&gt;)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Encode a JSON compatible
            <tt>value</tt> into a string representation. If
            <tt>pretty</tt> is set to
            <tt>True</tt>, the string will include newlines and indentation.
            <br>将一个可解析的<span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">value</span><span style="font-size: 0.9em;">解析成JSON字符串，如果</span><span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">pretty</span><span style="font-size: 0.9em;">设置成</span><span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">True</span><span style="font-size: 0.9em;">，返回的字符串将会被格式化。</span><span style="font-size: 0.9em;"><br></span></td>
        </tr>
        <tr>
          <td class="mth">decode_value(string)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-value">value</a></td>
          <td class="dsc">
            Decodes a JSON string into an object. If the
            <tt>string</tt> is invalid, a
            <tt>ValueError</tt> will be thrown.
            <br>将JSON字符串解码成对象。如果<span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">string</span><span style="font-size: 0.9em;">非法，则抛出</span><span style="color: rgb(0, 0, 0); font-family: Menlo, Consolas, &quot;Ubuntu Mono&quot;, monospace; font-size: 14px; background-color: rgb(243, 243, 243);">ValueError</span><span style="font-size: 0.9em;">异常。</span><span style="font-size: 0.9em;"><br></span></td>
        </tr>
        <tr>
          <td class="mth">expand_variables(value, variables)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-value">value</a></td>
          <td class="dsc">
            Expands any variables in the string
            <tt>value</tt> using the variables defined in the dictionary
            <tt>variables</tt>.
            <tt>value</tt> may also be a
            <tt>list</tt> or
            <tt>dict</tt>, in which case the structure will be recursively expanded. Strings should use snippet syntax, for example: <code class="  language-python">expand_variables<span class="token punctuation">(</span><span class="token string">"Hello, ${name}"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Foo"</span><span class="token punctuation">}</span><span class="token punctuation">)<br></span></code><span style="font-size: 14.4px;">&nbsp;</span>
            <br>
          </td>
        </tr>
        <tr>
          <td class="mth">load_settings(base_name)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Settings">Settings</a></td>
          <td class="dsc">
            Loads the named settings. The name should include a file name and extension, but not a path. The packages will be searched for files matching the
            <tt>base_name</tt>, and the results will be collated into the settings object. Subsequent calls to
            <tt>load_settings()</tt> with the
            <tt>base_name</tt> will return the same object, and not load the settings from disk again.
          </td>
        </tr>
        <tr>
          <td class="mth">save_settings(base_name)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Flushes any in-memory changes to the named settings object to disk.
          </td>
        </tr>
        <tr>
          <td class="mth">windows()</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Window">Window</a>]</td>
          <td class="dsc">
            Returns a list of all the open windows.
          </td>
        </tr>
        <tr>
          <td class="mth">active_window()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Window">Window</a></td>
          <td class="dsc">
            Returns the most recently used window.
          </td>
        </tr>
        <tr>
          <td class="mth">packages_path()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the path where all the user's loose packages are located.
          </td>
        </tr>
        <tr>
          <td class="mth">installed_packages_path()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the path where all the user's <span class="file">.sublime-package</span> files are located.
          </td>
        </tr>
        <tr>
          <td class="mth">cache_path()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the path where Sublime Text stores cache files.
          </td>
        </tr>
        <tr>
          <td class="mth">get_clipboard(&lt;size_limit&gt;)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the contents of the clipboard.
            <tt>size_limit</tt> is there to protect against unnecessarily large data, defaults to 16,777,216 characters
          </td>
        </tr>
        <tr>
          <td class="mth">set_clipboard(string)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the contents of the clipboard.
          </td>
        </tr>
        <tr>
          <td class="mth">score_selector(scope, selector)</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Matches the
            <tt>selector</tt> against the given
            <tt>scope</tt>, returning a score. A score of
            <tt>0</tt> means no match, above
            <tt>0</tt> means a match. Different selectors may be compared against the same scope: a higher score means the selector is a better match for the scope.
          </td>
        </tr>
        <tr>
          <td class="mth">run_command(string, &lt;args&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Runs the named <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime_plugin.ApplicationCommand">ApplicationCommand</a> with the (optional) given
            <tt>args</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">log_commands(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls command logging. If enabled, all commands run from key bindings and the menu will be logged to the console.
          </td>
        </tr>
        <tr>
          <td class="mth">log_input(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls input logging. If enabled, all key presses will be logged to the console.
          </td>
        </tr>
        <tr>
          <td class="mth">log_result_regex(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls result regex logging. This is useful for debugging regular expressions used in build systems.
          </td>
        </tr>
        <tr>
          <td class="mth">version()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the version number
          </td>
        </tr>
        <tr>
          <td class="mth">platform()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the platform, which may be
            <tt>"osx"</tt>,
            <tt>"linux"</tt> or
            <tt>"windows"</tt>
          </td>
        </tr>
        <tr>
          <td class="mth">arch()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the CPU architecture, which may be
            <tt>"x32"</tt> or
            <tt>"x64"</tt>
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.View"><code>sublime.View</code> Class</h2>
    <p>
      Represents a view into a text buffer. Note that multiple views may refer to the same buffer, but they have their own unique selection and geometry.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">id()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns a number that uniquely identifies this view.
          </td>
        </tr>
        <tr>
          <td class="mth">buffer_id()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns a number that uniquely identifies the buffer underlying this view.
          </td>
        </tr>
        <tr>
          <td class="mth">is_primary()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            If the view is the primary view into a file. Will only be
            <tt>False</tt> if the user has opened multiple views into a file.
          </td>
        </tr>
        <tr>
          <td class="mth">file_name()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            The full name file the file associated with the buffer, or
            <tt>None</tt> if it doesn't exist on disk.
          </td>
        </tr>
        <tr>
          <td class="mth">name()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            The name assigned to the buffer, if any
          </td>
        </tr>
        <tr>
          <td class="mth">set_name(name)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Assigns a name to the buffer
          </td>
        </tr>
        <tr>
          <td class="mth">is_loading()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the buffer is still loading from disk, and not ready for use.
          </td>
        </tr>
        <tr>
          <td class="mth">is_dirty()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if there are any unsaved modifications to the buffer.
          </td>
        </tr>
        <tr>
          <td class="mth">is_read_only()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the buffer may not be modified.
          </td>
        </tr>
        <tr>
          <td class="mth">set_read_only(value)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the read only property on the buffer.
          </td>
        </tr>
        <tr>
          <td class="mth">is_scratch()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the buffer is a scratch buffer. Scratch buffers never report as being dirty.
          </td>
        </tr>
        <tr>
          <td class="mth">set_scratch(value)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the scratch property on the buffer.
          </td>
        </tr>
        <tr>
          <td class="mth">settings()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Settings">Settings</a></td>
          <td class="dsc">
            Returns a reference to the view's settings object. Any changes to this settings object will be private to this view.
          </td>
        </tr>
        <tr>
          <td class="mth">window()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Window">Window</a></td>
          <td class="dsc">
            Returns a reference to the window containing the view.
          </td>
        </tr>
        <tr>
          <td class="mth">run_command(string, &lt;args&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Runs the named <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.TextCommand">TextCommand</a> with the (optional) given
            <tt>args</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">size()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the number of character in the file.
          </td>
        </tr>
        <tr>
          <td class="mth">substr(region)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the contents of the
            <tt>region</tt> as a string.
          </td>
        </tr>
        <tr>
          <td class="mth">substr(point)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the character to the right of the
            <tt>point</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">insert(edit, point, string)</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Inserts the given
            <tt>string</tt> in the buffer at the specified
            <tt>point</tt>. Returns the number of characters inserted: this may be different if tabs are being translated into spaces in the current buffer.
          </td>
        </tr>
        <tr>
          <td class="mth">erase(edit, region)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Erases the contents of the
            <tt>region</tt> from the buffer.
          </td>
        </tr>
        <tr>
          <td class="mth">replace(edit, region, string)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Replaces the contents of the
            <tt>region</tt> with the given
            <tt>string</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">sel()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Selection">Selection</a></td>
          <td class="dsc">
            Returns a reference to the selection.
          </td>
        </tr>
        <tr>
          <td class="mth">line(point)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns the line that contains the
            <tt>point</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">line(region)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns a modified copy of
            <tt>region</tt> such that it starts at the beginning of a line, and ends at the end of a line. Note that it may span several lines.
          </td>
        </tr>
        <tr>
          <td class="mth">full_line(point)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            As
            <tt>line()</tt>, but the region includes the trailing newline character, if any.
          </td>
        </tr>
        <tr>
          <td class="mth">full_line(region)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            As
            <tt>line()</tt>, but the region includes the trailing newline character, if any.
          </td>
        </tr>
        <tr>
          <td class="mth">lines(region)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Returns a list of lines (in sorted order) intersecting the
            <tt>region</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">split_by_newlines(region)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Splits the
            <tt>region</tt> up such that each region returned exists on exactly one line.
          </td>
        </tr>
        <tr>
          <td class="mth">word(point)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns the word that contains the
            <tt>point</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">word(region)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns a modified copy of
            <tt>region</tt> such that it starts at the beginning of a word, and ends at the end of a word. Note that it may span several words.
          </td>
        </tr>
        <tr>
          <td class="mth">classify(point)</td>
          <td class="rtn">int</td>
          <td class="dsc">
            <p>
              Classifies
              <tt>point</tt>, returning a bitwise OR of zero or more of these flags:
            </p>
            <ul>
              <li>
                <tt>sublime.CLASS_WORD_START</tt>
              </li>
              <li>
                <tt>sublime.CLASS_WORD_END</tt>
              </li>
              <li>
                <tt>sublime.CLASS_PUNCTUATION_START</tt>
              </li>
              <li>
                <tt>sublime.CLASS_PUNCTUATION_END</tt>
              </li>
              <li>
                <tt>sublime.CLASS_SUB_WORD_START</tt>
              </li>
              <li>
                <tt>sublime.CLASS_SUB_WORD_END</tt>
              </li>
              <li>
                <tt>sublime.CLASS_LINE_START</tt>
              </li>
              <li>
                <tt>sublime.CLASS_LINE_END</tt>
              </li>
              <li>
                <tt>sublime.CLASS_EMPTY_LINE</tt>
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td class="mth">find_by_class(point, forward, classes, &lt;separators&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Finds the next location after
            <tt>point</tt> that matches the given
            <tt>classes</tt>. If
            <tt>forward</tt> is
            <tt>False</tt>, searches backwards instead of forwards.
            <tt>classes</tt> is a bitwise OR of the
            <tt>sublime.CLASS_XXX</tt> flags.
            <tt>separators</tt> may be passed in, to define what characters should be considered to separate words.
          </td>
        </tr>
        <tr>
          <td class="mth">expand_by_class(point, classes, &lt;separators&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Expands
            <tt>point</tt> to the left and right, until each side lands on a location that matches
            <tt>classes</tt>.
            <tt>classes</tt> is a bitwise OR of the
            <tt>sublime.CLASS_XXX</tt> flags. separators may be passed in, to define what characters should be considered to separate words.
          </td>
        </tr>
        <tr>
          <td class="mth">expand_by_class(region, classes, &lt;separators&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Expands
            <tt>region</tt> to the left and right, until each side lands on a location that matches
            <tt>classes</tt>.
            <tt>classes</tt> is a bitwise OR of the
            <tt>sublime.CLASS_XXX</tt> flags.
            <tt>separators</tt> may be passed in, to define what characters should be considered to separate words.
          </td>
        </tr>
        <tr>
          <td class="mth">find(pattern, start_point, &lt;flags&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns the first region matching the regex
            <tt>pattern</tt>, starting from
            <tt>start_point</tt>, or
            <tt>None</tt> if it can't be found. The optional
            <tt>flags</tt> parameter may be
            <tt>sublime.LITERAL</tt>,
            <tt>sublime.IGNORECASE</tt>, or the two ORed together.
          </td>
        </tr>
        <tr>
          <td class="mth">find_all(pattern, &lt;flags&gt;, &lt;format&gt;, &lt;extractions&gt;)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Returns all (non-overlapping) regions matching the regex
            <tt>pattern</tt>. The optional
            <tt>flags</tt> parameter may be
            <tt>sublime.LITERAL</tt>,
            <tt>sublime.IGNORECASE</tt>, or the two ORed together. If a
            <tt>format</tt> string is given, then all matches will be formatted with the formatted string and placed into the extractions list.
          </td>
        </tr>
        <tr>
          <td class="mth">rowcol(point)</td>
          <td class="rtn">(int, int)</td>
          <td class="dsc">
            Calculates the 0-based line and column numbers of the
            <tt>point</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">text_point(row, col)</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Calculates the character offset of the given, 0-based,
            <tt>row</tt> and
            <tt>col</tt>. Note that
            <tt>col</tt> is interpreted as the number of characters to advance past the beginning of the row.
          </td>
        </tr>
        <tr>
          <td class="mth">set_syntax_file(syntax_file)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Changes the syntax used by the view.
            <tt>syntax_file</tt> should be a name along the lines of
            <tt>Packages/Python/Python.tmLanguage</tt>. To retrieve the current syntax, use <code class="  language-python">view<span class="token punctuation">.</span>settings<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">'syntax'</span><span class="token punctuation">)</span></code>.
          </td>
        </tr>
        <tr>
          <td class="mth">extract_scope(point)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns the extent of the syntax scope name assigned to the character at the given
            <tt>point</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">scope_name(point)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the syntax scope name assigned to the character at the given
            <tt>point</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">match_selector(point, selector)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Checks the
            <tt>selector</tt> against the scope at the given
            <tt>point</tt>, returning a bool if they match.
          </td>
        </tr>
        <tr>
          <td class="mth">score_selector(point, selector)</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Matches the
            <tt>selector</tt> against the scope at the given
            <tt>point</tt>, returning a score. A score of
            <tt>0</tt> means no match, above
            <tt>0</tt> means a match. Different selectors may be compared against the same scope: a higher score means the selector is a better match for the scope.
          </td>
        </tr>
        <tr>
          <td class="mth">find_by_selector(selector)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Finds all regions in the file matching the given
            <tt>selector</tt>, returning them as a list.
          </td>
        </tr>
        <tr>
          <td class="mth">show(location, &lt;show_surrounds&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Scroll the view to show the given
            <tt>location</tt>, which may be a <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-point">point</a>, <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a> or <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Selection">Selection</a>.
          </td>
        </tr>
        <tr>
          <td class="mth">show_at_center(location)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Scroll the view to center on the
            <tt>location</tt>, which may be a <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-point">point</a> or <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>.
          </td>
        </tr>
        <tr>
          <td class="mth">visible_region()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns the currently visible area of the view.
          </td>
        </tr>
        <tr>
          <td class="mth">viewport_position()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-vector">vector</a></td>
          <td class="dsc">
            Returns the offset of the viewport in layout coordinates.
          </td>
        </tr>
        <tr>
          <td class="mth">set_viewport_position(vector, &lt;animate&lt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Scrolls the viewport to the given layout position.
          </td>
        </tr>
        <tr>
          <td class="mth">viewport_extent()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-vector">vector</a></td>
          <td class="dsc">
            Returns the width and height of the viewport.
          </td>
        </tr>
        <tr>
          <td class="mth">layout_extent()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-vector">vector</a></td>
          <td class="dsc">
            Returns the width and height of the layout.
          </td>
        </tr>
        <tr>
          <td class="mth">text_to_layout(point)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-vector">vector</a></td>
          <td class="dsc">
            Converts a text position to a layout position
          </td>
        </tr>
        <tr>
          <td class="mth">layout_to_text(vector)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-point">point</a></td>
          <td class="dsc">
            Converts a layout position to a text position
          </td>
        </tr>
        <tr>
          <td class="mth">window_to_layout(vector)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-vector">vector</a></td>
          <td class="dsc">
            Converts a window position to a layout position
          </td>
        </tr>
        <tr>
          <td class="mth">window_to_text(vector)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-point">point</a></td>
          <td class="dsc">
            Converts a window position to a text position
          </td>
        </tr>
        <tr>
          <td class="mth">line_height()</td>
          <td class="rtn">float</td>
          <td class="dsc">
            Returns the light height used in the layout
          </td>
        </tr>
        <tr>
          <td class="mth">em_width()</td>
          <td class="rtn">float</td>
          <td class="dsc">
            Returns the typical character width used in the layout
          </td>
        </tr>
        <tr>
          <td class="mth">add_regions(key, [regions], &lt;scope&gt;, &lt;icon&gt;, &lt;flags&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              Add a set of
              <tt>regions</tt> to the view. If a set of
              <tt>regions</tt> already exists with the given
              <tt>key</tt>, they will be overwritten. The
              <tt>scope</tt> is used to source a color to draw the
              <tt>regions</tt> in, it should be the name of a scope, such as
              <tt>"comment"</tt> or
              <tt>"string"</tt>. If the
              <tt>scope</tt> is empty, the
              <tt>regions</tt> won't be drawn.
            </p>
            <p>
              The optional
              <tt>icon</tt> name, if given, will draw the named icons in the gutter next to each region. The
              <tt>icon</tt> will be tinted using the color associated with the scope. Valid icon names are
              <tt>dot</tt>,
              <tt>circle</tt>,
              <tt>bookmark</tt> and
              <tt>cross</tt>. The icon name may also be a full package relative path, such as
              <tt>Packages/Theme - Default/dot.png</tt>.
            </p>
            <p>
              The optional
              <tt>flags</tt> parameter is a bitwise combination of:
            </p>
            <ul>
              <li>
                <tt>sublime.DRAW_EMPTY</tt>: Draw empty regions with a vertical bar. By default, they aren't drawn at all.
              </li>
              <li>
                <tt>sublime.HIDE_ON_MINIMAP</tt>: Don't show the regions on the minimap.
              </li>
              <li>
                <tt>sublime.DRAW_EMPTY_AS_OVERWRITE</tt>: Draw empty regions with a horizontal bar instead of a vertical one.
              </li>
              <li>
                <tt>sublime.DRAW_NO_FILL</tt>: Disable filling the regions, leaving only the outline.
              </li>
              <li>
                <tt>sublime.DRAW_NO_OUTLINE</tt>: Disable drawing the outline of the regions.
              </li>
              <li>
                <tt>sublime.DRAW_SOLID_UNDERLINE</tt>: Draw a solid underline below the regions.
              </li>
              <li>
                <tt>sublime.DRAW_STIPPLED_UNDERLINE</tt>: Draw a stippled underline below the regions.
              </li>
              <li>
                <tt>sublime.DRAW_SQUIGGLY_UNDERLINE</tt>: Draw a squiggly underline below the regions.
              </li>
              <li>
                <tt>sublime.PERSISTENT</tt>: Save the regions in the session.
              </li>
              <li>
                <tt>sublime.HIDDEN</tt>: Don't draw the regions.
              </li>
            </ul>
            <p>
              The underline styles are exclusive, either zero or one of them should be given. If using an underline,
              <tt>sublime.DRAW_NO_FILL</tt> and
              <tt>sublime.DRAW_NO_OUTLINE</tt> should generally be passed in.
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">get_regions(key)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Return the regions associated with the given
            <tt>key</tt>, if any
          </td>
        </tr>
        <tr>
          <td class="mth">erase_regions(key)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Removed the named regions
          </td>
        </tr>
        <tr>
          <td class="mth">set_status(key, value)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Adds the status
            <tt>key</tt> to the view. The
            <tt>value</tt> will be displayed in the status bar, in a comma separated list of all status values, ordered by key. Setting the
            <tt>value</tt> to the empty string will clear the status.
          </td>
        </tr>
        <tr>
          <td class="mth">get_status(key)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the previously assigned value associated with the
            <tt>key</tt>, if any.
          </td>
        </tr>
        <tr>
          <td class="mth">erase_status(key)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Clears the named status.
          </td>
        </tr>
        <tr>
          <td class="mth">command_history(index, &lt;modifying_only&gt;)</td>
          <td class="rtn">(str, dict, int)</td>
          <td class="dsc">
            <p>
              Returns the command name, command arguments, and repeat count for the given history entry, as stored in the undo / redo stack.
            </p>
            <p>
              Index
              <tt>0</tt> corresponds to the most recent command,
              <tt>-1</tt> the command before that, and so on. Positive values for index indicate to look in the redo stack for commands. If the undo / redo history doesn't extend far enough, then
              <tt>(None, None, 0)</tt> will be returned.
            </p>
            <p>
              Setting
              <tt>modifying_only</tt> to
              <tt>True</tt> (the default is
              <tt>False</tt>) will only return entries that modified the buffer.
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">change_count()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the current change count. Each time the buffer is modified, the change count is incremented. The change count can be used to determine if the buffer has changed since the last it was inspected.
          </td>
        </tr>
        <tr>
          <td class="mth">fold([regions])</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Folds the given
            <tt>regions</tt>, returning
            <tt>False</tt> if they were already folded
          </td>
        </tr>
        <tr>
          <td class="mth">fold(region)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Folds the given
            <tt>region</tt>, returning
            <tt>False</tt> if it was already folded
          </td>
        </tr>
        <tr>
          <td class="mth">unfold(region)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Unfolds all text in the
            <tt>region</tt>, returning the unfolded regions
          </td>
        </tr>
        <tr>
          <td class="mth">unfold([regions])</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>]</td>
          <td class="dsc">
            Unfolds all text in the
            <tt>regions</tt>, returning the unfolded regions
          </td>
        </tr>
        <tr>
          <td class="mth">encoding()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the encoding currently associated with the file
          </td>
        </tr>
        <tr>
          <td class="mth">set_encoding(encoding)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Applies a new encoding to the file. This encoding will be used the next time the file is saved.
          </td>
        </tr>
        <tr>
          <td class="mth">line_endings()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns the line endings used by the current file.
          </td>
        </tr>
        <tr>
          <td class="mth">set_line_endings(line_endings)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the line endings that will be applied when next saving.
          </td>
        </tr>
        <tr>
          <td class="mth">overwrite_status()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns the overwrite status, which the user normally toggles via the insert key.
          </td>
        </tr>
        <tr>
          <td class="mth">set_overwrite_status(enabled)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the overwrite status.
          </td>
        </tr>
        <tr>
          <td class="mth">symbols()</td>
          <td class="rtn">[(<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a>, str)]</td>
          <td class="dsc">
            Extract all the symbols defined in the buffer.
          </td>
        </tr>
        <tr>
          <td class="mth">show_popup_menu(items, on_done, &lt;flags&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              Shows a pop up menu at the caret, to select an item in a list.
              <tt>on_done</tt> will be called once, with the index of the selected item. If the pop up menu was cancelled,
              <tt>on_done</tt> will be called with an argument of
              <tt>-1</tt>.
            </p>
            <p>
              <tt>items</tt> is a list of strings.
            </p>
            <p>
              <tt>flags</tt> it currently unused.
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">show_popup(content, &lt;flags&gt;, &lt;location&gt;, &lt;max_width&gt;, &lt;max_height&gt;, &lt;on_navigate&gt;, &lt;on_hide&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              Shows a popup displaying HTML content.
            </p>
            <p>
              <tt>flags</tt> is a bitwise combination of the following:
            </p>
            <ul>
              <li>
                <tt>sublime.COOPERATE_WITH_AUTO_COMPLETE</tt>. Causes the popup to display next to the auto complete menu
              </li>
              <li>
                <tt>sublime.HIDE_ON_MOUSE_MOVE</tt>. Causes the popup to hide when the mouse is moved, clicked or scrolled
              </li>
              <li>
                <tt>sublime.HIDE_ON_MOUSE_MOVE_AWAY</tt>. Causes the popup to hide when the mouse is moved (unless towards the popup), or when clicked or scrolled
              </li>
            </ul>
            <p>
              The default
              <tt>location</tt> of
              <tt>-1</tt> will display the popup at the cursor, otherwise a text point should be passed.
            </p>
            <p>
              <tt>max_width</tt> and
              <tt>max_height</tt> set the maximum dimensions for the popup, after which scroll bars will be displayed.
            </p>
            <p>
              <tt>on_navigate</tt> is a callback that should accept a string contents of the
              <tt>href</tt> attribute on the link the user clicked.
            </p>
            <p>
              <tt>on_hide</tt> is called when the popup is hidden.
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">update_popup(content)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Updates the contents of the currently visible popup.
          </td>
        </tr>
        <tr>
          <td class="mth">is_popup_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns if the popup is currently shown.
          </td>
        </tr>
        <tr>
          <td class="mth">hide_popup()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Hides the popup.
          </td>
        </tr>
        <tr>
          <td class="mth">is_auto_complete_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns if the auto complete menu is currently visible.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.Selection"><code>sublime.Selection</code> Class</h2>
    <p>
      Maintains a set of Regions, ensuring that none overlap. The regions are kept in sorted order.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">clear()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Removes all regions.
          </td>
        </tr>
        <tr>
          <td class="mth">add(region)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Adds the given
            <tt>region</tt>. It will be merged with any intersecting regions already contained within the set.
          </td>
        </tr>
        <tr>
          <td class="mth">add_all(regions)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Adds all regions in the given
            <tt>list</tt> or
            <tt>tuple</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">subtract(region)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Subtracts the
            <tt>region</tt> from all regions in the set.
          </td>
        </tr>
        <tr>
          <td class="mth">contains(region)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> iff the given
            <tt>region</tt> is a subset.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.Region"><code>sublime.Region</code> Class</h2>
    <p>
      Represents an area of the buffer. Empty regions, where a == b are valid.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Constructors</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">Region(a, b)</td>
          <td class="dsc">
            Creates a Region with initial values a and b.
          </td>
        </tr>
      </tbody>
    </table>
    <table class="functions">
      <tbody>
        <tr>
          <th>Properties</th>
          <th>Type</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">a</td>
          <td class="rtn">int</td>
          <td class="dsc">
            The first end of the region.
          </td>
        </tr>
        <tr>
          <td class="mth">b</td>
          <td class="rtn">int</td>
          <td class="dsc">
            The second end of the region. May be less that a, in which case the region is a reversed one.
          </td>
        </tr>
        <tr>
          <td class="mth">xpos</td>
          <td class="rtn">int</td>
          <td class="dsc">
            The target horizontal position of the region, or
            <tt>-1</tt> if undefined. Effects behavior when pressing the up or down keys.
          </td>
        </tr>
      </tbody>
    </table>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">begin()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the minimum of a and b.
          </td>
        </tr>
        <tr>
          <td class="mth">end()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the maximum of a and b.
          </td>
        </tr>
        <tr>
          <td class="mth">size()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the number of characters spanned by the region. Always &gt;= 0.
          </td>
        </tr>
        <tr>
          <td class="mth">empty()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> iff
            <tt>begin()</tt> ==
            <tt>end()</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">cover(region)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns a Region spanning both this and the given regions.
          </td>
        </tr>
        <tr>
          <td class="mth">intersection(region)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Region">Region</a></td>
          <td class="dsc">
            Returns the set intersection of the two regions.
          </td>
        </tr>
        <tr>
          <td class="mth">intersects(region)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> iff self ==
            <tt>region</tt> or both include one or more positions in common.
          </td>
        </tr>
        <tr>
          <td class="mth">contains(region)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> iff the given
            <tt>region</tt> is a subset.
          </td>
        </tr>
        <tr>
          <td class="mth">contains(point)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> iff
            <tt>begin()</tt> &lt;=
            <tt>point</tt> &lt;=
            <tt>end()</tt>.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.Phantom"><code>sublime.Phantom</code> Class</h2>
    <p>
      Represents an HTML-based decoration to display non-editable content interspersed in a View. Used with PhantomSet to actually add the phantoms to the View. Once a Phantom has been constructed and added to the View, changes to the attributes will have no effect.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Constructors</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">Phantom(region, content, layout, &lt;on_navigate&gt;)</td>
          <td class="dsc">
            <p>
              Creates a phantom attached to a
              <tt>region</tt>. The
              <tt>content</tt> is HTML to be processed by <a href="https://www.sublimetext.com/docs/3/minihtml.html" target="_blank" rel="external">minihtml</a>.
            </p>
            <p>
              <tt>layout</tt> must be one of:
            </p>
            <ul>
              <li>
                <tt>sublime.LAYOUT_INLINE</tt>: Display the phantom in between the
                <tt>region</tt> and the point following.
              </li>
              <li>
                <tt>sublime.LAYOUT_BELOW</tt>: Display the phantom in space below the current line, left-aligned with the
                <tt>region</tt>.
              </li>
              <li>
                <tt>sublime.LAYOUT_BLOCK</tt>: Display the phantom in space below the current line, left-aligned with the beginning of the line.
              </li>
            </ul>
            <p>
              <tt>on_navigate</tt> is an optional callback that should accept a single string parameter, that is the
              <tt>href</tt> attribute of the link clicked.
            </p>
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.PhantomSet"><code>sublime.PhantomSet</code> Class</h2>
    <p>
      A collection that manages Phantoms and the process of adding them, updating them and removing them from the View.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Constructors</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">PhantomSet(view, &lt;key&gt;)</td>
          <td class="dsc">
            Creates a PhantomSet attached to a
            <tt>view</tt>.
            <tt>key</tt> is a string to group Phantoms together.
          </td>
        </tr>
      </tbody>
    </table>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">update(phantoms)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              <tt>phantoms</tt> should be a list of phantoms.
            </p>
            <p>
              The
              <tt>.region</tt> attribute of each existing phantom in the set will be updated. New phantoms will be added to the view and phantoms not in
              <tt>phantoms</tt> list will be deleted.
            </p>
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.Edit"><code>sublime.Edit</code> Class</h2>
    <p>
      Edit objects have no functions, they exist to group buffer modifications.
    </p>
    <p>
      Edit objects are passed to <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.TextCommand">TextCommand</a>s, and can not be created by the user. Using an invalid Edit object, or an Edit object from a different View, will cause the functions that require them to fail.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">(no methods)</td>
          <td class="rtn"></td>
          <td class="dsc"></td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.Window"><code>sublime.Window</code> Class</h2>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">id()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns a number that uniquely identifies this window.
          </td>
        </tr>
        <tr>
          <td class="mth">new_file()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            Creates a new file. The returned view will be empty, and its
            <tt>is_loaded()</tt> method will return
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">open_file(file_name, &lt;flags&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            <p>
              Opens the named file, and returns the corresponding view. If the file is already opened, it will be brought to the front. Note that as file loading is asynchronous, operations on the returned view won't be possible until its
              <tt>is_loading()</tt> method returns
              <tt>False</tt>.
            </p>
            <p>
              The optional
              <tt>flags</tt> parameter is a bitwise combination of:
            </p>
            <ul>
              <li>
                <tt>sublime.ENCODED_POSITION</tt>: Indicates the file_name should be searched for a
                <tt>:row</tt> or
                <tt>:row:col</tt> suffix
              </li>
              <li>
                <tt>sublime.TRANSIENT</tt>: Open the file as a preview only: it won't have a tab assigned it until modified
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td class="mth">find_open_file(file_name)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            Finds the named file in the list of open files, and returns the corresponding View, or
            <tt>None</tt> if no such file is open.
          </td>
        </tr>
        <tr>
          <td class="mth">active_view()</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            Returns the currently edited view.
          </td>
        </tr>
        <tr>
          <td class="mth">active_view_in_group(group)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            Returns the currently edited view in the given
            <tt>group</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">views()</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a>]</td>
          <td class="dsc">
            Returns all open views in the window.
          </td>
        </tr>
        <tr>
          <td class="mth">views_in_group(group)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a>]</td>
          <td class="dsc">
            Returns all open views in the given
            <tt>group</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">num_groups()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the number of view groups in the window.
          </td>
        </tr>
        <tr>
          <td class="mth">active_group()</td>
          <td class="rtn">int</td>
          <td class="dsc">
            Returns the index of the currently selected group.
          </td>
        </tr>
        <tr>
          <td class="mth">focus_group(group)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Makes the given
            <tt>group</tt> active.
          </td>
        </tr>
        <tr>
          <td class="mth">focus_view(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Switches to the given
            <tt>view</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">get_view_index(view)</td>
          <td class="rtn">(int, int)</td>
          <td class="dsc">
            Returns the group, and index within the group of the
            <tt>view</tt>. Returns
            <tt>-1</tt> if not found.
          </td>
        </tr>
        <tr>
          <td class="mth">set_view_index(view, group, index)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Moves the
            <tt>view</tt> to the given
            <tt>group</tt> and
            <tt>index</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">status_message(string)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Show a message in the status bar.
          </td>
        </tr>
        <tr>
          <td class="mth">is_menu_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the menu is visible.
          </td>
        </tr>
        <tr>
          <td class="mth">set_menu_visible(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls if the menu is visible.
          </td>
        </tr>
        <tr>
          <td class="mth">is_sidebar_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the sidebar will be shown when contents are available.
          </td>
        </tr>
        <tr>
          <td class="mth">set_sidebar_visible(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the sidebar to be shown or hidden when contents are available.
          </td>
        </tr>
        <tr>
          <td class="mth">get_tabs_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if tabs will be shown for open files.
          </td>
        </tr>
        <tr>
          <td class="mth">set_tabs_visible(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls if tabs will be shown for open files.
          </td>
        </tr>
        <tr>
          <td class="mth">is_minimap_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the minimap is enabled.
          </td>
        </tr>
        <tr>
          <td class="mth">set_minimap_visible(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls the visibility of the minimap.
          </td>
        </tr>
        <tr>
          <td class="mth">is_status_bar_visible()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the status bar will be shown.
          </td>
        </tr>
        <tr>
          <td class="mth">set_status_bar_visible(flag)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Controls the visibility of the status bar.
          </td>
        </tr>
        <tr>
          <td class="mth">folders()</td>
          <td class="rtn">[str]</td>
          <td class="dsc">
            Returns a list of the currently open folders.
          </td>
        </tr>
        <tr>
          <td class="mth">project_file_name()</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns name of the currently opened project file, if any.
          </td>
        </tr>
        <tr>
          <td class="mth">project_data()</td>
          <td class="rtn">dict</td>
          <td class="dsc">
            Returns the project data associated with the current window. The data is in the same format as the contents of a <span class="file">.sublime-project</span> file.
          </td>
        </tr>
        <tr>
          <td class="mth">set_project_data(data)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Updates the project data associated with the current window. If the window is associated with a <span class="file">.sublime-project</span> file, the project file will be updated on disk, otherwise the window will store the data internally.
          </td>
        </tr>
        <tr>
          <td class="mth">run_command(string, &lt;args&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Runs the named <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.WindowCommand">WindowCommand</a> with the (optional) given
            <tt>args</tt>. This method is able to run any sort of command, dispatching the command via input focus.
          </td>
        </tr>
        <tr>
          <td class="mth">show_quick_panel(items, on_done, &lt;flags&gt;, &lt;selected_index&gt;, &lt;on_highlighted&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              Shows a quick panel, to select an item in a list.
              <tt>on_done</tt> will be called once, with the index of the selected item. If the quick panel was cancelled,
              <tt>on_done</tt> will be called with an argument of
              <tt>-1</tt>.
            </p>
            <p>
              <tt>items</tt> may be a list of strings, or a list of string lists. In the latter case, each entry in the quick panel will show multiple rows.
            </p>
            <p>
              <tt>flags</tt> is a bitwise OR of
              <tt>sublime.MONOSPACE_FONT</tt> and
              <tt>sublime.KEEP_OPEN_ON_FOCUS_LOST</tt>
            </p>
            <p>
              <tt>on_highlighted</tt>, if given, will be called every time the highlighted item in the quick panel is changed.
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">show_input_panel(caption, initial_text, on_done, on_change, on_cancel)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            Shows the input panel, to collect a line of input from the user.
            <tt>on_done</tt> and
            <tt>on_change</tt>, if not
            <tt>None</tt>, should both be functions that expect a single string argument.
            <tt>on_cancel</tt> should be a function that expects no arguments. The view used for the input widget is returned.
          </td>
        </tr>
        <tr>
          <td class="mth">create_output_panel(name, &lt;unlisted&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a></td>
          <td class="dsc">
            <p>
              Returns the view associated with the named output panel, creating it if required. The output panel can be shown by running the
              <tt>show_panel</tt> window command, with the
              <tt>panel</tt> argument set to the name with an
              <tt>"output."</tt> prefix.
            </p>
            <p>
              The optional
              <tt>unlisted</tt> parameter is a boolean to control if the output panel should be listed in the panel switcher.
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">find_output_panel(name)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.View">View</a> <em>or</em> None</td>
          <td class="dsc">
            Returns the view associated with the named output panel, or
            <tt>None</tt> if the output panel does not exist.
          </td>
        </tr>
        <tr>
          <td class="mth">destroy_output_panel(name)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Destroys the named output panel, hiding it if currently open.
          </td>
        </tr>
        <tr>
          <td class="mth">active_panel()</td>
          <td class="rtn">str <em>or</em> None</td>
          <td class="dsc">
            Returns the name of the currently open panel, or
            <tt>None</tt> if no panel is open. Will return built-in panel names (e.g.
            <tt>"console"</tt>,
            <tt>"find"</tt>, etc) in addition to output panels.
          </td>
        </tr>
        <tr>
          <td class="mth">panels()</td>
          <td class="rtn">[str]</td>
          <td class="dsc">
            Returns a list of the names of all panels that have not been marked as unlisted. Includes certain built-in panels in addition to output panels.
          </td>
        </tr>
        <tr>
          <td class="mth">lookup_symbol_in_index(symbol)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-location">location</a>]</td>
          <td class="dsc">
            Returns all locations where the symbol is defined across files in the current project.
          </td>
        </tr>
        <tr>
          <td class="mth">lookup_symbol_in_open_files(symbol)</td>
          <td class="rtn">[<a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-location">location</a>]</td>
          <td class="dsc">
            Returns all locations where the symbol is defined across open files.
          </td>
        </tr>
        <tr>
          <td class="mth">extract_variables()</td>
          <td class="rtn">dict</td>
          <td class="dsc">
            <p>
              Returns a dictionary of strings populated with contextual keys:
            </p>
            <p>
              <tt>packages, platform, file, file_path, file_name, file_base_name, file_extension, folder, project, project_path, project_name, project_base_name, project_extension</tt>. This dict is suitable for passing to
              <tt>sublime.expand_variables()</tt>.
            </p>
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime.Settings"><code>sublime.Settings</code> Class</h2>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">get(name, &lt;default&gt;)</td>
          <td class="rtn"><a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-value">value</a></td>
          <td class="dsc">
            Returns the named setting, or
            <tt>default</tt> if it's not defined. If not passed,
            <tt>default</tt> will have a value of
            <tt>None</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">set(name, value)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Sets the named setting. Only primitive types, lists, and dicts are accepted.
          </td>
        </tr>
        <tr>
          <td class="mth">erase(name)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Removes the named setting. Does not remove it from any parent Settings.
          </td>
        </tr>
        <tr>
          <td class="mth">has(name)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> iff the named option exists in this set of Settings or one of its parents.
          </td>
        </tr>
        <tr>
          <td class="mth">add_on_change(key, on_change)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Register a callback to be run whenever a setting in this object is changed.
          </td>
        </tr>
        <tr>
          <td class="mth">clear_on_change(key)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Remove all callbacks registered with the given
            <tt>key</tt>.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime_plugin"><code>sublime_plugin</code> Module</h2>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">(no methods)</td>
          <td class="rtn"></td>
          <td class="dsc"></td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime_plugin.EventListener"><code>sublime_plugin.EventListener</code> Class</h2>
    <p>
      Note that many of these events are triggered by the buffer underlying the view, and thus the method is only called once, with the first view as the parameter.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">on_new(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a new buffer is created.
          </td>
        </tr>
        <tr>
          <td class="mth">on_new_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a new buffer is created. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_clone(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view is cloned from an existing one.
          </td>
        </tr>
        <tr>
          <td class="mth">on_clone_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view is cloned from an existing one. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_load(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the file is finished loading.
          </td>
        </tr>
        <tr>
          <td class="mth">on_load_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the file is finished loading. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_pre_close(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view is about to be closed. The view will still be in the window at this point.
          </td>
        </tr>
        <tr>
          <td class="mth">on_close(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view is closed (note, there may still be other views into the same buffer).
          </td>
        </tr>
        <tr>
          <td class="mth">on_pre_save(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called just before a view is saved.
          </td>
        </tr>
        <tr>
          <td class="mth">on_pre_save_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called just before a view is saved. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_post_save(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after a view has been saved.
          </td>
        </tr>
        <tr>
          <td class="mth">on_post_save_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after a view has been saved. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_modified(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after changes have been made to a view.
          </td>
        </tr>
        <tr>
          <td class="mth">on_modified_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after changes have been made to a view. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_selection_modified(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after the selection has been modified in a view.
          </td>
        </tr>
        <tr>
          <td class="mth">on_selection_modified_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after the selection has been modified in a view. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_activated(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view gains input focus.
          </td>
        </tr>
        <tr>
          <td class="mth">on_activated_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view gains input focus. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_deactivated(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view loses input focus.
          </td>
        </tr>
        <tr>
          <td class="mth">on_deactivated_async(view)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view loses input focus. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_hover(view, point, hover_zone)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              Called when the user's mouse hovers over a view for a short period.
            </p>
            <p>
              <tt>point</tt> is the closest point in the view to the mouse location. The mouse may not actually be located adjacent based on the value of
              <tt>hover_zone</tt>:
            </p>
            <ul>
              <li>
                <tt>sublime.HOVER_TEXT</tt>: When the mouse is hovered over text.
              </li>
              <li>
                <tt>sublime.HOVER_GUTTER</tt>: When the mouse is hovered over the gutter.
              </li>
              <li>
                <tt>sublime.HOVER_MARGIN</tt>: When the mouse is hovered in whitespace to the right of a line.
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td class="mth">on_query_context(view, key, operator, operand, match_all)</td>
          <td class="rtn">bool <em>or</em> None</td>
          <td class="dsc">
            <p>
              Called when determining to trigger a key binding with the given context
              <tt>key</tt>. If the plugin knows how to respond to the context, it should return either
              <tt>True</tt> of
              <tt>False</tt>. If the context is unknown, it should return
              <tt>None</tt>.
            </p>
            <p>
              <tt>operator</tt> is one of:
            </p>
            <ul>
              <li>
                <tt>sublime.OP_EQUAL</tt>: Is the value of the context equal to the operand?
              </li>
              <li>
                <tt>sublime.OP_NOT_EQUAL</tt>: Is the value of the context not equal to the operand?
              </li>
              <li>
                <tt>sublime.OP_REGEX_MATCH</tt>: Does the value of the context match the regex given in operand?
              </li>
              <li>
                <tt>sublime.OP_NOT_REGEX_MATCH</tt>: Does the value of the context not match the regex given in operand?
              </li>
              <li>
                <tt>sublime.OP_REGEX_CONTAINS</tt>: Does the value of the context contain a substring matching the regex given in operand?
              </li>
              <li>
                <tt>sublime.OP_NOT_REGEX_CONTAINS</tt>: Does the value of the context not contain a substring matching the regex given in operand?
              </li>
            </ul>
            <p>
              <tt>match_all</tt> should be used if the context relates to the selections: does every selection have to match (
              <tt>match_all == True</tt>), or is at least one matching enough (
              <tt>match_all == False</tt>)?
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">on_query_completions(view, prefix, locations)</td>
          <td class="rtn">list<em>,</em> tuple <em>or</em> None</td>
          <td class="dsc">
            <p>
              Called whenever completions are to be presented to the user. The
              <tt>prefix</tt> is a unicode string of the text to complete.
            </p>
            <p>
              <tt>locations</tt> is a list of <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-point">points</a>. Since this method is called for all completions in every view no matter the syntax, <code class="  language-python">view<span class="token punctuation">.</span>match_selector<span class="token punctuation">(</span>point<span class="token punctuation">,</span> relevant_scope<span class="token punctuation">)</span></code> should be called to determine if the point is relevant.
            </p>
            <p>
              The return value must be one of the following formats:
            </p>
            <ul>
              <li>
                <p>
                  <tt>None</tt>: no completions are provided
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="0"><code class="  language-python"><span class="token keyword">return</span> None</code></pre>
                <p></p>
              </li>
              <li>
                <p>
                  A list of 2-element lists/tuples. The first element is a unicode string of the completion trigger, the second is the unicode replacement text.
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="1"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">"me1"</span><span class="token punctuation">,</span> <span class="token string">"method1()"</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">"me2"</span><span class="token punctuation">,</span> <span class="token string">"method2()"</span><span class="token punctuation">]</span><span class="token punctuation">]</span></code></pre>
                <p></p>
                <p>
                  The trigger may contain a tab character (
                  <tt>\t</tt>) followed by a hint to display in the right-hand side of the completion box.
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="2"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">[</span>
    <span class="token punctuation">[</span><span class="token string">"me1\tmethod"</span><span class="token punctuation">,</span> <span class="token string">"method1()"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
    <span class="token punctuation">[</span><span class="token string">"me2\tmethod"</span><span class="token punctuation">,</span> <span class="token string">"method2()"</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span></code></pre>
                <p></p>
                <p>
                  The replacement text may contain dollar-numeric fields such as a snippet does, e.g.
                  <tt>$0</tt>,
                  <tt>$1</tt>.
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="3"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">[</span>
    <span class="token punctuation">[</span><span class="token string">"fn"</span><span class="token punctuation">,</span> <span class="token string">"def ${1:name}($2) { $0 }"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
    <span class="token punctuation">[</span><span class="token string">"for"</span><span class="token punctuation">,</span> <span class="token string">"for ($1; $2; $3) { $0 }"</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span></code></pre>
                <p></p>
              </li>
              <li>
                <p>
                  A 2-element tuple with the first element being the list format documented above, and the second element being bit flags from the following list:
                </p>
                <ul>
                  <li>
                    <tt>sublime.INHIBIT_WORD_COMPLETIONS</tt>: prevent Sublime Text from showing completions based on the contents of the view
                  </li>
                  <li>
                    <tt>sublime.INHIBIT_EXPLICIT_COMPLETIONS</tt>: prevent Sublime Text from showing completions based on
                    <tt>.sublime-completions</tt> files
                  </li>
                </ul>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="4"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">(</span>
    <span class="token punctuation">[</span>
        <span class="token punctuation">[</span><span class="token string">"me1"</span><span class="token punctuation">,</span> <span class="token string">"method1()"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
        <span class="token punctuation">[</span><span class="token string">"me2"</span><span class="token punctuation">,</span> <span class="token string">"method2()"</span><span class="token punctuation">]</span>
    <span class="token punctuation">]</span><span class="token punctuation">,</span>
    sublime<span class="token punctuation">.</span>INHIBIT_WORD_COMPLETIONS <span class="token operator">|</span> sublime<span class="token punctuation">.</span>INHIBIT_EXPLICIT_COMPLETIONS
<span class="token punctuation">)</span></code></pre>
                <p></p>
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td class="mth">on_text_command(view, command_name, args)</td>
          <td class="rtn">(str, dict)</td>
          <td class="dsc">
            Called when a text command is issued. The listener may return a
            <tt>(command, arguments)</tt> tuple to rewrite the command, or
            <tt>None</tt> to run the command unmodified.
          </td>
        </tr>
        <tr>
          <td class="mth">on_window_command(window, command_name, args)</td>
          <td class="rtn">(str, dict)</td>
          <td class="dsc">
            Called when a window command is issued. The listener may return a
            <tt>(command, arguments)</tt> tuple to rewrite the command, or
            <tt>None</tt> to run the command unmodified.
          </td>
        </tr>
        <tr>
          <td class="mth">on_post_text_command(view, command_name, args)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after a text command has been executed.
          </td>
        </tr>
        <tr>
          <td class="mth">on_post_window_command(window, command_name, args)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after a window command has been executed.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime_plugin.ViewEventListener"><code>sublime_plugin.ViewEventListener</code> Class</h2>
    <p>
      A class that provides similar event handling to <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.EventListener">EventListener</a>, but bound to a specific view. Provides class method-based filtering to control what views objects are created for.
    </p>
    <p>
      The view is passed as a single parameter to the constructor. The default implementation makes the view available via
      <tt>self.view</tt>.
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Class Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">is_applicable(settings)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            A
            <tt>@classmethod</tt> that receives a <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#sublime.Settings">Settings</a> object and should return a bool indicating if this class applies to a view with those settings
          </td>
        </tr>
        <tr>
          <td class="mth">applies_to_primary_view_only()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            A
            <tt>@classmethod</tt> that should return a bool indicating if this class applies only to the primary view for a file. A view is considered primary if it is the only, or first, view into a file.
          </td>
        </tr>
      </tbody>
    </table>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">on_modified()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after changes have been made to the view.
          </td>
        </tr>
        <tr>
          <td class="mth">on_modified_async()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after changes have been made to the view. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_selection_modified()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after the selection has been modified in the view.
          </td>
        </tr>
        <tr>
          <td class="mth">on_selection_modified_async()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called after the selection has been modified in the view. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_activated()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when a view gains input focus.
          </td>
        </tr>
        <tr>
          <td class="mth">on_activated_async()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the view gains input focus. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_deactivated()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the view loses input focus.
          </td>
        </tr>
        <tr>
          <td class="mth">on_deactivated_async()</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the view loses input focus. Runs in a separate thread, and does not block the application.
          </td>
        </tr>
        <tr>
          <td class="mth">on_hover(point, hover_zone)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            <p>
              Called when the user's mouse hovers over the view for a short period.
            </p>
            <p>
              <tt>point</tt> is the closest point in the view to the mouse location. The mouse may not actually be located adjacent based on the value of
              <tt>hover_zone</tt>:
            </p>
            <ul>
              <li>
                <tt>sublime.HOVER_TEXT</tt>: When the mouse is hovered over text.
              </li>
              <li>
                <tt>sublime.HOVER_GUTTER</tt>: When the mouse is hovered over the gutter.
              </li>
              <li>
                <tt>sublime.HOVER_MARGIN</tt>: When the mouse is hovered in whitespace to the right of a line.
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td class="mth">on_query_context(key, operator, operand, match_all)</td>
          <td class="rtn">bool <em>or</em> None</td>
          <td class="dsc">
            <p>
              Called when determining to trigger a key binding with the given context
              <tt>key</tt>. If the plugin knows how to respond to the context, it should return either
              <tt>True</tt> of
              <tt>False</tt>. If the context is unknown, it should return
              <tt>None</tt>.
            </p>
            <p>
              <tt>operator</tt> is one of:
            </p>
            <ul>
              <li>
                <tt>sublime.OP_EQUAL</tt>: Is the value of the context equal to the operand?
              </li>
              <li>
                <tt>sublime.OP_NOT_EQUAL</tt>: Is the value of the context not equal to the operand?
              </li>
              <li>
                <tt>sublime.OP_REGEX_MATCH</tt>: Does the value of the context match the regex given in operand?
              </li>
              <li>
                <tt>sublime.OP_NOT_REGEX_MATCH</tt>: Does the value of the context not match the regex given in operand?
              </li>
              <li>
                <tt>sublime.OP_REGEX_CONTAINS</tt>: Does the value of the context contain a substring matching the regex given in operand?
              </li>
              <li>
                <tt>sublime.OP_NOT_REGEX_CONTAINS</tt>: Does the value of the context not contain a substring matching the regex given in operand?
              </li>
            </ul>
            <p>
              <tt>match_all</tt> should be used if the context relates to the selections: does every selection have to match (
              <tt>match_all == True</tt>), or is at least one matching enough (
              <tt>match_all == False</tt>)?
            </p>
          </td>
        </tr>
        <tr>
          <td class="mth">on_query_completions(prefix, locations)</td>
          <td class="rtn">list<em>,</em> tuple <em>or</em> None</td>
          <td class="dsc">
            <p>
              Called whenever completions are to be presented to the user. The
              <tt>prefix</tt> is a unicode string of the text to complete.
            </p>
            <p>
              <tt>locations</tt> is a list of <a href="https://macdfree.github.io/2016/09/18/SublimeText3API/#type-point">points</a>. Since this method is called for all completions no matter the syntax, <code class="  language-python">self<span class="token punctuation">.</span>view<span class="token punctuation">.</span>match_selector<span class="token punctuation">(</span>point<span class="token punctuation">,</span> relevant_scope<span class="token punctuation">)</span></code> should be called to determine if the point is relevant.
            </p>
            <p>
              The return value must be one of the following formats:
            </p>
            <ul>
              <li>
                <p>
                  <tt>None</tt>: no completions are provided
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="5"><code class="  language-python"><span class="token keyword">return</span> None</code></pre>
                <p></p>
              </li>
              <li>
                <p>
                  A list of 2-element lists/tuples. The first element is a unicode string of the completion trigger, the second is the unicode replacement text.
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="6"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">"me1"</span><span class="token punctuation">,</span> <span class="token string">"method1()"</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">"me2"</span><span class="token punctuation">,</span> <span class="token string">"method2()"</span><span class="token punctuation">]</span><span class="token punctuation">]</span></code></pre>
                <p></p>
                <p>
                  The trigger may contain a tab character (
                  <tt>\t</tt>) followed by a hint to display in the right-hand side of the completion box.
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="7"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">[</span>
    <span class="token punctuation">[</span><span class="token string">"me1\tmethod"</span><span class="token punctuation">,</span> <span class="token string">"method1()"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
    <span class="token punctuation">[</span><span class="token string">"me2\tmethod"</span><span class="token punctuation">,</span> <span class="token string">"method2()"</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span></code></pre>
                <p></p>
                <p>
                  The replacement text may contain dollar-numeric fields such as a snippet does, e.g.
                  <tt>$0</tt>,
                  <tt>$1</tt>.
                </p>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="8"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">[</span>
    <span class="token punctuation">[</span><span class="token string">"fn"</span><span class="token punctuation">,</span> <span class="token string">"def ${1:name}($2) { $0 }"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
    <span class="token punctuation">[</span><span class="token string">"for"</span><span class="token punctuation">,</span> <span class="token string">"for ($1; $2; $3) { $0 }"</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span></code></pre>
                <p></p>
              </li>
              <li>
                <p>
                  A 2-element tuple with the first element being the list format documented above, and the second element being bit flags from the following list:
                </p>
                <ul>
                  <li>
                    <tt>sublime.INHIBIT_WORD_COMPLETIONS</tt>: prevent Sublime Text from showing completions based on the contents of the view
                  </li>
                  <li>
                    <tt>sublime.INHIBIT_EXPLICIT_COMPLETIONS</tt>: prevent Sublime Text from showing completions based on
                    <tt>.sublime-completions</tt> files
                  </li>
                </ul>
                <p>
                </p><pre class="  language-python" data-initialized="true" data-gclp-id="9"><code class="  language-python"><span class="token keyword">return</span> <span class="token punctuation">(</span>
    <span class="token punctuation">[</span>
        <span class="token punctuation">[</span><span class="token string">"me1"</span><span class="token punctuation">,</span> <span class="token string">"method1()"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
        <span class="token punctuation">[</span><span class="token string">"me2"</span><span class="token punctuation">,</span> <span class="token string">"method2()"</span><span class="token punctuation">]</span>
    <span class="token punctuation">]</span><span class="token punctuation">,</span>
    sublime<span class="token punctuation">.</span>INHIBIT_WORD_COMPLETIONS <span class="token operator">|</span> sublime<span class="token punctuation">.</span>INHIBIT_EXPLICIT_COMPLETIONS
<span class="token punctuation">)</span></code></pre>
                <p></p>
              </li>
            </ul>
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime_plugin.ApplicationCommand"><code>sublime_plugin.ApplicationCommand</code> Class</h2>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">run(&lt;args&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the command is run.
          </td>
        </tr>
        <tr>
          <td class="mth">is_enabled(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the command is able to be run at this time. The default implementation simply always returns
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">is_visible(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the command should be shown in the menu at this time. The default implementation always returns
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">is_checked(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if a checkbox should be shown next to the menu item. The <span class="file">.sublime-menu</span> file must have the checkbox attribute set to
            <tt>true</tt> for this to be used.
          </td>
        </tr>
        <tr>
          <td class="mth">description(&lt;args&gt;)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns a description of the command with the given arguments. Used in the menu, if no caption is provided. Return
            <tt>None</tt> to get the default description.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime_plugin.WindowCommand"><code>sublime_plugin.WindowCommand</code>Class</h2>
    <p>
      WindowCommands are instantiated once per window. The Window object may be retrieved via
      <tt>self.window</tt>
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">run(&lt;args&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the command is run.
          </td>
        </tr>
        <tr>
          <td class="mth">is_enabled(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the command is able to be run at this time. The default implementation simply always returns
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">is_visible(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the command should be shown in the menu at this time. The default implementation always returns
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">description(&lt;args&gt;)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns a description of the command with the given arguments. Used in the menu, if no caption is provided. Return
            <tt>None</tt> to get the default description.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <section>
    <h2 id="sublime_plugin.TextCommand"><code>sublime_plugin.TextCommand</code> Class</h2>
    <p>
      TextCommands are instantiated once per view. The View object may be retrieved via
      <tt>self.view</tt>
    </p>
    <table class="functions">
      <tbody>
        <tr>
          <th>Methods</th>
          <th>Return Value</th>
          <th>Description</th>
        </tr>
        <tr>
          <td class="mth">run(edit, &lt;args&gt;)</td>
          <td class="rtn">None</td>
          <td class="dsc">
            Called when the command is run.
          </td>
        </tr>
        <tr>
          <td class="mth">is_enabled(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the command is able to be run at this time. The default implementation simply always returns
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">is_visible(&lt;args&gt;)</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Returns
            <tt>True</tt> if the command should be shown in the menu at this time. The default implementation always returns
            <tt>True</tt>.
          </td>
        </tr>
        <tr>
          <td class="mth">description(&lt;args&gt;)</td>
          <td class="rtn">str</td>
          <td class="dsc">
            Returns a description of the command with the given arguments. Used in the menus, and for Undo / Redo descriptions. Return
            <tt>None</tt> to get the default description.
          </td>
        </tr>
        <tr>
          <td class="mth">want_event()</td>
          <td class="rtn">bool</td>
          <td class="dsc">
            Return
            <tt>True</tt> to receive an
            <tt>event</tt> argument when the command is triggered by a mouse action. The event information allows commands to determine which portion of the view was clicked on. The default implementation returns
            <tt>False</tt>.
          </td>
        </tr>
      </tbody>
    </table>
  </section>
  <form id="gclp-frame-form" target="gclp-frame" method="post" style="display: none;"></form>
  <div class="gclp-code-grabber" data-gclp-id="0" data-hasqtip="true" style="left: 1238.5px; top: 13853.8px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="1" data-hasqtip="true" style="left: 1238.5px; top: 13949px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="2" data-hasqtip="true" style="left: 1238.5px; top: 14045.1px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="3" data-hasqtip="true" style="left: 1238.5px; top: 14202.3px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="4" data-hasqtip="true" style="left: 1238.5px; top: 14453.3px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="5" data-hasqtip="true" style="left: 1238.5px; top: 16298.5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="6" data-hasqtip="true" style="left: 1238.5px; top: 16393.7px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="7" data-hasqtip="true" style="left: 1238.5px; top: 16489.9px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="8" data-hasqtip="true" style="left: 1238.5px; top: 16647.1px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="9" data-hasqtip="true" style="left: 1238.5px; top: 16898.1px; display: none;"></div>
  <div class="transit-notify-list">
    <div class="transit-list-inner"></div>
  </div>
  <div class="gclp-code-grabber" data-gclp-id="10" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="11" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="12" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="13" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="14" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="15" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="16" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="17" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="18" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="19" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="20" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="21" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="22" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="23" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="24" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="25" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="26" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="27" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="28" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="29" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="30" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="31" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="32" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="33" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="34" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="35" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="36" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="37" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="38" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="39" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="40" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="41" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="42" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="43" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="44" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="45" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="46" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="47" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="48" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="49" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="50" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="51" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="52" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="53" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="54" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="55" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="56" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="57" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="58" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="59" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="60" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="61" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="62" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="63" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="64" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="65" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="66" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="67" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="68" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="69" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="70" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="71" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="72" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="73" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="74" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="75" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="76" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="77" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="78" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="79" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="80" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="81" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="82" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="83" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="84" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="85" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="86" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="87" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="88" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="89" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="90" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="91" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="92" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="93" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="94" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="95" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="96" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="97" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="98" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="99" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="100" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="101" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="102" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="103" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
  <div class="gclp-code-grabber" data-gclp-id="104" data-hasqtip="true" style="left: -30px; top: 5px; display: none;"></div>
</body>

</html>


    </div>

    
    <div class="post-copyright">
  <p class="copyright-item">
    <span class="item-title">文章作者</span>
    <span class="item-content">macd</span>
  </p>
  <p class="copyright-item">
    <span class="item-title">上次更新</span>
    <span class="item-content">2016-10-02</span>
  </p>
  
  
</div>

    
    
<div class="post-reward">
  <input type="checkbox" name="reward" id="reward" hidden />
  <label class="reward-button" for="reward">赞赏支持</label>
  <div class="qr-code">
    
    
      <label class="qr-code-image" for="reward">
        <img class="image" src="/img/reward/wechat-qr-code.png">
        <span>微信打赏</span>
      </label>
    
      <label class="qr-code-image" for="reward">
        <img class="image" src="/img/reward/alipay-qr-code.png">
        <span>支付宝打赏</span>
      </label>
  </div>
</div>

    <footer class="post-footer">
      

      
      <nav class="post-nav">
        
          <a class="prev" href="/posts/sublimetext%E6%8F%92%E4%BB%B6%E7%BC%96%E5%86%99%E5%A4%87%E5%BF%98/">
            <i class="iconfont icon-left"></i>
            <span class="prev-text nav-default">SublimeText插件编写备忘</span>
            <span class="prev-text nav-mobile">上一篇</span>
          </a>
        
          <a class="next" href="/posts/%E7%9C%8B%E8%BF%87%E7%9A%84%E5%8A%A8%E6%BC%AB/">
            <span class="next-text nav-default">看过的动漫</span>
            <span class="prev-text nav-mobile">下一篇</span>
            <i class="iconfont icon-right"></i>
          </a>
      </nav>
    </footer>
  </article>
        </div>
        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="social-links">
      <a href="mailto:macdfree@163.com" class="iconfont icon-email" title="email"></a>
      <a href="https://github.com/MACDfree" class="iconfont icon-github" title="github"></a>
  <a href="/index.xml" type="application/rss+xml" class="iconfont icon-rss" title="rss"></a>
</div>

<div class="copyright">
  <span class="power-by">
    由 <a class="hexo-link" href="https://gohugo.io">Hugo</a> 强力驱动
  </span>
  <span class="division">|</span>
  <span class="theme-info">
    主题 - 
    <a class="theme-link" href="https://github.com/olOwOlo/hugo-theme-even">Even</a>
  </span>

  <div class="busuanzi-footer">
    <span id="busuanzi_container_site_pv"> 本站总访问量 <span id="busuanzi_value_site_pv"><img src="/img/spinner.svg" alt="spinner.svg"/></span> 次 </span>
    <span class="division">|</span>
    <span id="busuanzi_container_site_uv"> 本站总访客数 <span id="busuanzi_value_site_uv"><img src="/img/spinner.svg" alt="spinner.svg"/></span> 人 </span>
  </div>

  <span class="copyright-year">
    &copy; 
    
      2014 - 
    2019
    <span class="heart">
      <i class="iconfont icon-heart"></i>
    </span>
    <span class="author">macd</span>
    <span class="division">|</span>
    <span style="margin-left: 5px;">
      <img alt="buildstatus" src="https://travis-ci.org/MACDfree/hugoblog.svg?branch=master">
    </span>
  </span>
</div>
    </footer>

    <div class="back-to-top" id="back-to-top">
      <i class="iconfont icon-up"></i>
    </div>
  </div>
  
<script src="/lib/highlight/highlight.pack.js?v=20171001"></script><script type="text/javascript" src="/lib/jquery/jquery-3.2.1.min.js"></script>
  <script type="text/javascript" src="/lib/slideout/slideout-1.0.1.min.js"></script>
  <script type="text/javascript" src="/lib/fancybox/jquery.fancybox-3.1.20.min.js"></script>
<script type="text/javascript" src="/dist/even.min.js?v=3.1.1"></script>








</body>
</html>
